package com.coupon.admin.service;

import com.coupon.admin.entity.UserCoupon;
import com.coupon.admin.dto.CouponReceiveDTO;
import com.coupon.admin.dto.CouponGroupCreateDTO;

import java.util.List;

/**
 * 优惠券发放与领取服务接口
 */
public interface CouponReceiveService {
    
    /**
     * 用户主动领取优惠券
     */
    UserCoupon receiveCoupon(CouponReceiveDTO receiveDTO);
    
    /**
     * 系统自动发放优惠券
     */
    boolean autoIssueCoupon(Long userId, Long couponId, String reason);
    
    /**
     * 批量发放优惠券
     */
    boolean batchIssueCoupons(List<Long> userIds, Long couponId, String reason);
    
    /**
     * 创建拼券团
     */
    Long createCouponGroup(CouponGroupCreateDTO createDTO);
    
    /**
     * 加入拼券团
     */
    boolean joinCouponGroup(Long groupId, Long userId);
    
    /**
     * 完成盲盒任务
     */
    UserCoupon completeBlindBoxTask(Long userId, Long taskId);
    
    /**
     * 获取用户券包
     */
    List<UserCoupon> getUserCoupons(Long userId, String status);
    
    /**
     * 获取个性化推荐券
     */
    List<Long> getPersonalizedCoupons(Long userId, Integer limit);
    
    /**
     * 检查用户是否可以领取券
     */
    boolean canReceiveCoupon(Long userId, Long couponId);
    
    /**
     * 获取券的实时库存
     */
    Integer getCouponStock(Long couponId);
    
    /**
     * 处理过期券
     */
    void processExpiredCoupons();
}
